package global

import (
	"fresh-shop-gin/utils"
	"time"

	"gorm.io/gorm"
)

type GlobalModel struct {
	CreatedAt utils.DateTime  `gorm:"comment:创建时间"`
	UpdatedAt utils.DateTime  `gorm:"comment:修改时间"`
	DeletedAt *utils.DateTime `gorm:"index;comment:删除时间" json:"-"`
}

// 创建时自动设置时间
func (m *GlobalModel) BeforeCreate(tx *gorm.DB) error {
	now := utils.DateTime(time.Now())
	m.CreatedAt = now
	m.UpdatedAt = now
	return nil
}

// 更新时自动设置时间
func (m *GlobalModel) BeforeUpdate(tx *gorm.DB) error {
	now := utils.DateTime(time.Now())
	m.UpdatedAt = now
	return nil
}

// 软删除处理
func (m *GlobalModel) Delete(db *gorm.DB) error {
	now := utils.DateTime(time.Now())
	return db.Model(m).Update("deleted_at", now).Error
}

// 恢复软删除
func (m *GlobalModel) Restore(db *gorm.DB) error {
	return db.Model(m).Update("deleted_at", nil).Error
}

// 查询作用域（排除已删除）
func NotDeleted(db *gorm.DB) *gorm.DB {
	return db.Where("deleted_at IS NULL")
}
